Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт до лабораторної роботи №1
“Внутрішнє представлення цілих та дійсних чисел в пам’яті комп ”
Варіант№15
Мета Роботи: Дослідити внутрішнє представлення цілих та дійсних чисел в пам’яті комп’ютера.
2. Постановка задачі
Дослідити внутрішнє представлення змінної типу int для чисел 1515 та -1515 і змінної типу float для чисел 15,15 та -15,15.
Опис алгоритму
Створюємо вказівнк типу unsigned char на адреси змінних типу int та float. Далі в циклі, від 0 до об’єму, який займає змінна в пам’яті (кількості байтів ( комірок, які займає код числа)), виводимо на екран код числа, який представляємо в виді шістнадцяткового коду, побайтово, тобто кожен байт відповідає тетраді двійкового коду числа. Наведений алгоритм використовуємо для змінних типу int та float без змін.
Текст програми
main.c
#include <stdio.h>
#include <conio.h>
int main (void)
{
int ifirst, isecond;
float ffirst, fsecond;
int i;
unsigned char* pf=(unsigned char *)(&ifirst);
unsigned char* ph=(unsigned char *)(&isecond);
printf("Input first number by int:\n");
scanf("%d", &ifirst);
for(i=0; i<sizeof(ifirst); i++)
printf("%X", pf[i]);
printf("\n");
printf("Input second number by int:\n");
scanf("%d", &isecond);
for(i=0; i<sizeof(isecond); i++)
printf("%X ", ph[i]);
printf("\n");
/*-----------------------------------*/
printf("Input first number by float:\n");
scanf("%f", &ffirst);
for(i=0; i<sizeof(ffirst); i++)
printf("%X", pf[i]);
printf("\n");
printf("Input second number by float:\n");
scanf("%f", &fsecond);
for(i=0; i<sizeof(fsecond); i++)
printf("%X ", ph[i]);
printf("\n");
getch();
return 0;
}
Результати тестування
Ручний розрахунок
Int:1515 2
14 757 2
11 6 378 2
10 15 2 189 2
15 14 17 18 94 2
14 17 16 9 8 47 2
15 16 18 8 14 4 28 2
14 1 18 1 14 17 2 14 2
1 0 0 16 8 14 7 2
1 8 0 6 3 2
0 1 2 1
1001101
00000000 00000000 00000000 01001101
ВПК: 01001101 00000000 00000000 00000000
4D 00 00 00
Int 7710=4D 00 00 0016
Від’ємні знаходяться в доповняльному коді.
00000000 00000000 00000000 01001101 – Прямий код
11111111 11111111 11111111 10110010 – Обернений код
11111111 11111111 11111111 10110010
+ 1
11111111 11111111 11111111 10110011 - Доповняльний код
ВПК: 10110011 11111111 11111111 11111111
B3 FF FF FF
Int -7710=B3 FF FF FF FF16
float: 7 2
6 3 2
1 2 1
1
710=716=1112
x0,7 x0,2
16 16 - Повтор.
11,2 3,2
0,710 = B316 = 1011 00112
7,710 = 7,B316 = 0111,1011 00112
0111, 10110011 00000000 00000000 0000
01,11 10110011 00000000 00000000 0000
e=12710+210=12910=8116=1000 00012
sem
s=0 – число додатнє.
e=1000 00012
m=111011001100000000000002
01000000 11110110 01100000 00000000
ВПК: 00000000 01100000 11110110 01000000
FF 60 F6 40
Float 7,710=00000000 01100000 11110110 010000002= FF 60 F6 4016
s=1 - число від’мне.
e=1000 00012
m=111011001100000000000002
11000000 11110110 01100000 00000000
ВПК: 00000000 01100000 11110110 11000000
FF 60 F6 C0
Float 7,710=00000000 01100000 11110110 110000002= FF 60 F6 C016
Результати виконання програм
int: Input first number by int
77
4D 00 00 00
Input second number by int
-77
B3 FF FF FF FF
Input first number by float
7,7
FF 60 F6 40
Input second number by float
-7,7
FF 60 F6 40
Висновок: На данній лабораторній робіті було досліджено внутрішнє представлення змінної типу int для чисел 77 та -77 і змінної типу float для чисел 7,7 та -7,7.